package com.acme.service.email;

import com.acme.domain.email.Email;
import com.acme.domain.email.Queue;

public class EmailService extends Thread {
    private Queue queue = new Queue();
    private boolean isClosed = false;

    public EmailService() {
        start();
    }

    @Override
    public void run() {
        Email email;
        while (!isClosed) {
            email = queue.getEmail();
            if (email == null) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void sendNotificationEmail(Email email) {
        if (!isClosed) {
            queue.addEmail(email);
        }
    }


    private static EmailService instance = new EmailService();

    public static EmailService getEmailService() {
        return instance;
    }

    public void close() {
        isClosed = true;
        this.
        Реализовать метод emailService.close(), который запрещает
        дальнейшее добавление сообщений в очередь, дожидается отправки всех
        накопленных соотщений, закрывает дополнитульный поток отправки и
        возвращает управление.
    }
}
